package com.yuandian.api.business_monitor.feign;

import com.yuandian.api.business_monitor.po.AlarmParams;
import com.yuandian.api.business_monitor.vo.*;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.utils.PageDataInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 说明：基础告警查询接口，提供给运维工作台远程调用
 * @author LinShiHe
 * @Date 2023/3/14 16:06
 */
@FeignClient(contextId = "RemoteBaseAlarmService", value = "bpm-business-monitor")
public interface RemoteBaseAlarmService {


	/**
	 * 基础告警列表查询
	 * @param params  查询参数
	 * @return 通用返回对象
	 */
	@PostMapping("/alarm/business/getBaseAlarmList")
	R<PageDataInfo> getBaseAlarmList(@RequestBody AlarmParams params);


	/**
	 * 基础告警列表查询-下载
	 * @param params  查询参数
	 * @return 通用返回对象
	 */
	@PostMapping("/alarm/business/exportBaseAlarmExcel")
	R<Object> exportBaseAlarmExcel(@RequestBody AlarmParams params);

//
//	/**
//	 * 按照系统ID、业务编码、时间范围、端口ID查询各告警对应 不同等级 的告警总数列表
//	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
//	 * @return 返回通用结果集
//	 */
//	@PostMapping("/alarm/business/getBusinessGradeDate")
//	R<PageDataInfo> getBusinessGradeDate(@RequestBody AlarmParams params);


	/**
	 * 按照系统ID、业务编码、时间范围、端口ID和告警类型id查询各告警详情列表
	 * @param params  查询参数（系统ID、业务编码、时间范围、端口ID）
	 * @return 返回通用结果集
	 */
	@PostMapping("/alarm/business/getBusinessAlarmList")
	R<PageDataInfo> getBusinessAlarmList(@RequestBody AlarmParams params);



	/**
	 * 基础告警-详情-告警总览
	 *
	 * @param id	告警数据主键ID
	 * @param startTime	开始时间
	 * @param endTime	结束时间
	 * @return	通用结果集
	 */
	@GetMapping("/alarm/business/getBusinessAlarmDetail")
	R<BaseBusinessAlarmVo> getBusinessAlarmDetail(@RequestParam(value = "id") String id,
												  @RequestParam(value = "startTime") String startTime,
												  @RequestParam(value = "endTime") String endTime);


	/**
	 * 基础告警-详情-业务详情回溯信息
	 *
	 * @param id	告警数据主键ID
	 * @param startTime	开始时间
	 * @param endTime	结束时间
	 * @return	通用结果集
	 */
	@GetMapping("/alarm/business/getBusinessDetailList")
	R<List<BusinessAlarmDetailVo>> getBusinessDetailList(@RequestParam(value = "id") String id,
														 @RequestParam(value = "startTime") String startTime,
														 @RequestParam(value = "endTime") String endTime);


	/**
	 * 基础告警-详情-业务步骤信息
	 *
	 * @param id	告警数据主键ID
	 * @param startTime	开始时间
	 * @param endTime	结束时间
	 * @return	通用结果集
	 */
	@GetMapping("/alarm/business/getStepDetailList")
	R<List<BusinessAlarmStepVo>> getStepDetailList(@RequestParam(value = "id") String id,
												   @RequestParam(value = "startTime") String startTime,
												   @RequestParam(value = "endTime") String endTime);

	/**
	 * 基础告警-详情-业务步骤信息
	 *
	 * @param indicatorsVo	告警数据主键ID
	 * @return	通用结果集
	 */
	@PostMapping("/alarm/business/checkExpression")
	R checkExpression(@RequestBody AlarmIndicatorsVo indicatorsVo);
}
